/**
 * 拆分模块,用来维护用户的数据
 */

// 导入接口 API
import { reqUserInfo, reqPassport } from '@/api/login'
// 导入处理token 的文件
import { removeToken } from '@/utils/storage'
// 导入路由实例
import router from '@/router'
// 导入element文件
import { Message } from 'element-ui'

const user = {
  namespaced: true,
  state: {
    // userInfo: JSON.parse(localStorage.getItem('userInfo')) || {} // 用户信息
    userInfo: {}
  },
  getters: {},
  mutations: {
    saveUserInfo(state, params) {
      // 将传递过来的数据进行设置
      state.userInfo = params
    }

    // emptyUserInfo(state, params) {
    //   state.userInfo = params
    // }
  },
  actions: {
    // 获取用户信息
    async getUserInfo({ commit }) {
      // 调用接口API 获取用户信息
      const res = await reqUserInfo()

      // console.log(res)
      if (res.code === 200) {
        // 调用mutations中的方法去(存储)修改store中的数据
        commit('saveUserInfo', res.data)

        // 解决用户信息丢失的方案 1: 使用 localStorage 将用户信息数据在本地进行存储
        // localStorage.setItem('userInfo', JSON.stringify(res.data))
      } else {
        // 如果接口返回的业务状态码不是 200 则抛出错误
        return Promise.reject(new Error())
      }
    },

    // 退出登录
    async getPassport(context, message) {
      // 调用接口
      const res = await reqPassport()
      console.log(res)
      if (res.code === 200) {
        // 清除本地 token
        removeToken()
        // 清除本地用户信息
        // 调用mutations中的方法并将一个空对象作为参数传递
        context.commit('saveUserInfo', {})
        // 进行路由跳转并提示
        router.push('/login')

        // if (message === '退出成功') {
        //   Message.success(message)
        // } else {
        //   Message.success(message)
        // }

        Message.success(message)
      }
    }
  }
}

export default user
